{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### Content under Creative Commons Attribution license CC-BY 4.0, code under BSD 3-Clause License © 2018 parts of this notebook are from ([this Jupyter notebook](https://nbviewer.jupyter.org/github/krischer/seismo_live/blob/master/notebooks/Computational%20Seismology/Wave%20Propagation%20%26%20Analytical%20Solutions/Greens_function_acoustic_1-3D.ipynb)) by Kristina Garina, Ashim Rijal and Heiner Igel ([@heinerigel](https://github.com/heinerigel)) which is a supplemenatry material to the book [Computational Seismology: A Practical Introduction](http://www.computational-seismology.org/),  additional modifications by D. Koehn, notebook style sheet by L.A. Barba, N.C. Clementi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<link href=\"https://fonts.googleapis.com/css?family=Merriweather:300,300i,400,400i,700,700i,900,900i\" rel='stylesheet' >\n",
       "<link href=\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i,700,700i\" rel='stylesheet' >\n",
       "<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' >\n",
       "<style>\n",
       "\n",
       "@font-face {\n",
       "    font-family: \"Computer Modern\";\n",
       "    src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
       "}\n",
       "\n",
       "\n",
       "#notebook_panel { /* main background */\n",
       "    background: rgb(245,245,245);\n",
       "}\n",
       "\n",
       "div.cell { /* set cell width */\n",
       "    width: 800px;\n",
       "}\n",
       "\n",
       "div #notebook { /* centre the content */\n",
       "    background: #fff; /* white background for content */\n",
       "    width: 1000px;\n",
       "    margin: auto;\n",
       "    padding-left: 0em;\n",
       "}\n",
       "\n",
       "#notebook li { /* More space between bullet points */\n",
       "margin-top:0.5em;\n",
       "}\n",
       "\n",
       "/* draw border around running cells */\n",
       "div.cell.border-box-sizing.code_cell.running { \n",
       "    border: 1px solid #111;\n",
       "}\n",
       "\n",
       "/* Put a solid color box around each cell and its output, visually linking them*/\n",
       "div.cell.code_cell {\n",
       "    background-color: rgb(256,256,256); \n",
       "    border-radius: 0px; \n",
       "    padding: 0.5em;\n",
       "    margin-left:1em;\n",
       "    margin-top: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "div.text_cell_render{\n",
       "    font-family: 'Source Sans Pro', sans-serif;\n",
       "    line-height: 140%;\n",
       "    font-size: 110%;\n",
       "    width:680px;\n",
       "    margin-left:auto;\n",
       "    margin-right:auto;\n",
       "}\n",
       "\n",
       "/* Formatting for header cells */\n",
       ".text_cell_render h1 {\n",
       "    font-family: 'Merriweather', serif;\n",
       "    font-style:regular;\n",
       "    font-weight: bold;    \n",
       "    font-size: 250%;\n",
       "    line-height: 100%;\n",
       "    color: #004065;\n",
       "    margin-bottom: 1em;\n",
       "    margin-top: 0.5em;\n",
       "    display: block;\n",
       "}\t\n",
       ".text_cell_render h2 {\n",
       "    font-family: 'Merriweather', serif;\n",
       "    font-weight: bold; \n",
       "    font-size: 180%;\n",
       "    line-height: 100%;\n",
       "    color: #0096d6;\n",
       "    margin-bottom: 0.5em;\n",
       "    margin-top: 0.5em;\n",
       "    display: block;\n",
       "}\t\n",
       "\n",
       ".text_cell_render h3 {\n",
       "    font-family: 'Merriweather', serif;\n",
       "\tfont-size: 150%;\n",
       "    margin-top:12px;\n",
       "    margin-bottom: 3px;\n",
       "    font-style: regular;\n",
       "    color: #008367;\n",
       "}\n",
       "\n",
       ".text_cell_render h4 {    /*Use this for captions*/\n",
       "    font-family: 'Merriweather', serif;\n",
       "    font-weight: 300; \n",
       "    font-size: 100%;\n",
       "    line-height: 120%;\n",
       "    text-align: left;\n",
       "    width:500px;\n",
       "    margin-top: 1em;\n",
       "    margin-bottom: 2em;\n",
       "    margin-left: 80pt;\n",
       "    font-style: regular;\n",
       "}\n",
       "\n",
       ".text_cell_render h5 {  /*Use this for small titles*/\n",
       "    font-family: 'Source Sans Pro', sans-serif;\n",
       "    font-weight: regular;\n",
       "    font-size: 130%;\n",
       "    color: #e31937;\n",
       "    font-style: italic;\n",
       "    margin-bottom: .5em;\n",
       "    margin-top: 1em;\n",
       "    display: block;\n",
       "}\n",
       "\n",
       ".text_cell_render h6 { /*use this for copyright note*/\n",
       "    font-family: 'Source Code Pro', sans-serif;\n",
       "    font-weight: 300;\n",
       "    font-size: 9pt;\n",
       "    line-height: 100%;\n",
       "    color: grey;\n",
       "    margin-bottom: 1px;\n",
       "    margin-top: 1px;\n",
       "}\n",
       "\n",
       "    .CodeMirror{\n",
       "            font-family: \"Source Code Pro\";\n",
       "\t\t\tfont-size: 90%;\n",
       "    }\n",
       "/*    .prompt{\n",
       "        display: None;\n",
       "    }*/\n",
       "\t\n",
       "    \n",
       "    .warning{\n",
       "        color: rgb( 240, 20, 20 )\n",
       "        }  \n",
       "</style>\n",
       "<script>\n",
       "    MathJax.Hub.Config({\n",
       "                        TeX: {\n",
       "                           extensions: [\"AMSmath.js\"], \n",
       "                           equationNumbers: { autoNumber: \"AMS\", useLabelIds: true}\n",
       "                           },\n",
       "                tex2jax: {\n",
       "                    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
       "                    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
       "                },\n",
       "                displayAlign: 'center', // Change this to 'center' to center equations.\n",
       "                \"HTML-CSS\": {\n",
       "                    styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "                }\n",
       "        });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Execute this cell to load the notebook's style sheet, then ignore it\n",
    "from IPython.core.display import HTML\n",
    "css_file = '../style/custom.css'\n",
    "HTML(open(css_file, \"r\").read())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Computation of Green's functions and seismograms for the acoustic wave equation\n",
    "\n",
    "In the previous lessons we derived the equations of motion to describe wave propagation in 3D, 2D and 1D elastic and acoustic media. Before solving the underlying partial differential equations numerically using finite-differences (FD), we should estimate some analytical solutions. \n",
    "\n",
    "This is not only useful to check if the FD codes contain any bugs, but also to get an idea of the accuracy of the numerical solution compared to the analytical."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1D Green's function  \n",
    "\n",
    "\n",
    "Let's start with a simple problem, like the equations of motion for a **1D acoustic medium** assuming a constant density model, which we derived in [Lesson 3](http://nbviewer.jupyter.org/github/daniel-koehn/Theory-of-seismic-waves-II/blob/master/01_Analytical_solutions/3_Acoustic_medium.ipynb) and [4](http://nbviewer.jupyter.org/github/daniel-koehn/Theory-of-seismic-waves-II/blob/master/01_Analytical_solutions/4_2D_1D_elastic_acoustic_approx.ipynb):\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\partial^2 P}{\\partial t^2} - V_p^2\\frac{\\partial^2 P}{\\partial x^2} = f\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "If we introduce the **Dirac delta function**\n",
    "\n",
    "$$\n",
    "\\delta(x) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "\t\\infty &x=0 \\\\\n",
    "\t0 &x\\neq 0 \t\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "\n",
    "with the normalization condition \n",
    "\n",
    "$$\n",
    "\\int_{-\\infty}^{\\infty} \\delta(x)\\; dx = 1\n",
    "$$\n",
    "\n",
    "and property \n",
    "\n",
    "$$\n",
    "\\int_{-\\infty}^{\\infty} \\delta(x-x_0)\\; f(x)\\; dx = f(x_0)\n",
    "$$\n",
    "\n",
    "as a source term of the acoustic wave equation:\n",
    "\n",
    "\\begin{equation}\n",
    "f = \\delta(t-t_s) \\delta(x-x_s) \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "we call the solution of the 1D wave equation\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\partial^2 G_1}{\\partial t^2} - V_p^2 \\frac{\\partial^2 G_1}{\\partial x^2} = \\delta(t-t_s) \\delta(x-x_s)\n",
    "\\end{equation}\n",
    "\n",
    "**Green's function** $\\mathbf{G_1(x,t;x_s,t_s)}$. This means that we place a source at $x = x_s$. The **source time function** describes the time-dependent behaviour of the source. In this case the source time function has an amplitude of $1\\; \\frac{Pa}{s^2}$ only at time $t = t_s$, otherwise the amplitude is zero. The pressure wavefield is recored at the receiver position x and time t.\n",
    "\n",
    "In the following derivation of the Green's function, we assume the special case of a source located at $x_s = 0\\; m$ and a source time $t_s = 0\\; s$, which simplifies eq. (1) to \n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\partial^2 G_1}{\\partial t^2} - V_p^2 \\frac{\\partial^2 G_1}{\\partial x^2} = \\delta(t) \\delta(x)\n",
    "\\end{equation}\n",
    "\n",
    "Furthermore, the P-wave velocity distribution in the sub-surface is constant:\n",
    "\n",
    "\\begin{equation}\n",
    "V_p(x) = V_{p0} = const. \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "The Green's function can be calculated using different approaches. We try to find a solution in the Fourier domain. First, we apply a temporal **Fourier transform** \n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{f}(\\omega) = \\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty} f(t) e^{-i\\omega t} dt\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "where $\\omega$ denotes the angular frequency, to eq. (2):\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty}\\biggl\\{\\frac{\\partial^2 G_1(x,t)}{\\partial t^2} - V_{p0}^2\\frac{\\partial^2 G_1(x,t)}{\\partial x^2}\\biggl\\} e^{-i\\omega t} dt = \\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty}\\delta(t) \\delta(x) e^{-i\\omega t} dt \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "Using the properties:\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty}\\biggl\\{\\frac{\\partial^2 G_1}{\\partial t^2}\\biggl\\} e^{-i\\omega t} dt = -\\omega^2 \\hat{G}_1(x,\\omega) \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "and\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty}\\delta(t) e^{-i\\omega t} dt = \\frac{1}{2 \\pi} e^{-i\\omega 0} = \\frac{1}{2 \\pi}\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "we can get rid of the 2nd time-derivative on the LHS and the time-dependent $\\delta$ function on the RHS:\n",
    "\n",
    "\\begin{equation}\n",
    "-\\omega^2 \\hat{G}_1(x,\\omega) - V_{p0}^2\\frac{\\partial^2 \\hat{G}_1(x,\\omega)}{\\partial x^2} = \\frac{1}{2 \\pi} \\delta(x)\n",
    "\\end{equation}\n",
    "\n",
    "Next, we apply a spatial Fourier transform\n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{f}(k) = \\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty} f(x) e^{-ikx} dx,\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "where $k$ denotes the wavenumber, to eq. (3):\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{1}{2 \\pi} \\int_{-\\infty}^{\\infty}\\biggl\\{-\\omega^2\\hat{G}_1(x,\\omega) - V_{p0}^2\\frac{\\partial^2 \\hat{G}_1(x,\\omega)}{\\partial x^2}\\biggr\\} e^{-ikx} dx = \\frac{1}{4 \\pi^2}\\int_{-\\infty}^{\\infty}\\delta(x) e^{-ikx} dx\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "and using the same properties as for the temporal Fourier transform, we get:\n",
    "\n",
    "\\begin{equation}\n",
    "-\\omega^2 \\hat{G}_1(k,\\omega) + k^2 V_{p0}^2 \\hat{G}_1(k,\\omega) = \\frac{1}{4 \\pi^2}\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "Solving for $\\hat{G}_1(k,\\omega)$:\n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{G}_1(k,\\omega) = \\frac{1}{4 \\pi^2} \\frac{1}{V_{p0}^2 k^2 - \\omega^2} = \\frac{1}{4 \\pi^2 V_{p0}^2} \\frac{1}{k^2 - \\frac{\\omega^2}{V_{p0}^2}}\n",
    "\\end{equation}\n",
    "\n",
    "we have derived the **Green's function solution for the 1D acoustic wave equation in the frequency-wavenumber domain**.\n",
    "\n",
    "To get the time-domain solution, we first apply the inverse spatial Fourier transform to eq. (4)\n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{G}_1(x,\\omega) = \\frac{1}{4 \\pi^2 V_{p0}^2}\\int_{-\\infty}^{\\infty} \\frac{e^{ikx}}{k^2 - \\frac{\\omega^2}{V_{p0}^2}}dk \\notag\n",
    "\\end{equation}\n",
    "\n",
    "This integral has two poles at $k = \\pm \\frac{\\omega}{V_p}$, so we have to integrate along a contour around the poles. For further details, I refer to my extended lecture notes on the [Transformation of an analytical solution of the 1D acoustic\n",
    "wave equation for a homogeneous, unbounded medium from\n",
    "$(\\omega, k)$ to $(t, x)$ domain](https://github.com/daniel-koehn/Theory-of-seismic-waves-II/tree/master/01_Analytical_solutions/1D_Green_wk_2_tx_domain.pdf)\n",
    "\n",
    "The result is the solution in the **frequency-space domain**:\n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{G}_1(x,\\omega) =  \\frac{e^{-i\\omega|x|/V_{p0}}}{4 \\pi i V_{p0} \\omega}. \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "This will become useful to test the accuracy of our frequency domain finite-difference codes, which we will develop later in the lecture. For the transformation to time-domain we have to integrate around the pole at $\\omega=0$:\n",
    "\n",
    "\\begin{equation}\n",
    "\\hat{G}_1(x,t) =  \\frac{1}{4 \\pi i V_{p0}}\\int_{-\\infty}^{\\infty}\\frac{e^{i\\omega(t-|x|/V_{p0})}}{\\omega} d\\omega. \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "This finally leads to the Green's function for the 1D homogeneous acoustic problem:\n",
    "\n",
    "\\begin{equation}\n",
    "G_1(x,t)=\\dfrac{1}{2V_{p0}}H\\biggl(t-\\dfrac{|x|}{V_{p0}}\\biggr),\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "where $H$ denotes the **Heaviside function**:\n",
    "\n",
    "$$\n",
    "H(x) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "\t0 &x<0 \\\\\n",
    "\t1 &x\\geq 0 \t\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "\n",
    "More generally, we can replace:\n",
    "\n",
    "\\begin{align}\n",
    "x &\\rightarrow x - x_s,\\nonumber\\\\\n",
    "t &\\rightarrow t - t_s,\\nonumber\\\\\n",
    "\\end{align}\n",
    "\n",
    "and get:\n",
    "\n",
    "\\begin{equation}\n",
    "G_1(x,t)=\\dfrac{1}{2V_{p0}}H\\biggl((t-t_s)-\\dfrac{|x-x_s|}{V_{p0}}\\biggr),\\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "So the 1D Green's function is a Heaviside function delayed by the traveltime between source and receiver. Note also that the absolute value of the offset $|x-x_s|$ implies that we have a wave propagating to the left and one propagating to the right. Let's plot the 1D Green's function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "code_folding": [
     0
    ]
   },
   "outputs": [],
   "source": [
    "# Import Libraries\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "code_folding": []
   },
   "outputs": [],
   "source": [
    "# Define parameters\n",
    "vp0 = 1.        # velocity m/s \n",
    "r = 2.          # distance from source\n",
    "tmax = 5.       # length of seismogram (s)\n",
    "nt = 3000       # number of time samples\n",
    "dt = tmax/nt    # time increment\n",
    "ts = 0          # source time\n",
    "\n",
    "\n",
    "# Acquisition geometry\n",
    "xs=0            # coordinates of source\n",
    "ys=0\n",
    "zs=0\n",
    "\n",
    "xr=r            # coordinates of receiver\n",
    "yr=0\n",
    "zr=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "code_folding": []
   },
   "outputs": [],
   "source": [
    "# Define time vector\n",
    "time = np.arange(0,tmax,dt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculating Green's function in 1D\n",
    "\n",
    "G1=np.zeros(nt)      # initialize G with zeros\n",
    "\n",
    "for i in range (nt):\n",
    "    \n",
    "    # 1D Greens function amplitude after arrival of P-wave at receiver position\n",
    "    if (((time[i]-ts)-abs(xr-xs)/vp0)>=0):\n",
    "        G1[i]=1./(2*vp0)\n",
    "    # 1D Greens function amplitude before arrival of P-wave at receiver position    \n",
    "    else:\n",
    "        G1[i]=0\n",
    "\n",
    "# Plotting Green's function in 1D\n",
    "plt.plot(time, G1)\n",
    "plt.title(\"Green's function for hom. 1D acoustic medium\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2D Green's function  \n",
    "\n",
    "Using the same approach as for the 1D medium, we can calculate the **2D Green's function** $\\mathbf{G_2(x,t;x_s,t_s)}$, which is governed by\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\partial^2 G_2}{\\partial t^2} - V_{p0}^2 \\biggl(\\frac{\\partial^2 G_2}{\\partial x^2} + \\frac{\\partial^2 G_2}{\\partial z^2} \\biggl)= \\delta(t-t_s) \\delta(x-x_s) \\delta(z-z_s) \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "as \n",
    "\n",
    "\\begin{equation}\n",
    "G_2(x,z,t) = \\dfrac{1}{2\\pi V_{p0}^2}\\dfrac{H\\biggl((t-t_s)-\\dfrac{|r|}{V_{p0}}\\biggr)}{\\sqrt{(t-t_s)^2-\\dfrac{r^2}{V_{p0}^2}}} \\nonumber \n",
    "\\end{equation}\n",
    "\n",
    "with the source-receiver distance (offset)\n",
    "\n",
    "$r = \\sqrt{(x-x_s)^2+(z-z_s)^2}$\n",
    "\n",
    "Compared to the 1D Green's function, we have a damped Heaviside function due to the radiation characteristic of the infinite line source, introduced by the 2D approximation. Let's also plot the 2D Green's function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "code_folding": [],
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculation of 2D Green's function\n",
    "\n",
    "G2=np.zeros(nt)                    # initialization G with zeros\n",
    "r=np.sqrt((xs-xr)**2+(ys-yr)**2)\n",
    "\n",
    "for i in range (nt):\n",
    "    \n",
    "    # 2D Greens function amplitude after arrival of P-wave at receiver position\n",
    "    if (((time[i]-ts)-abs(r)/vp0)>0):\n",
    "        G2[i]=(1./(2*np.pi*vp0**2))*(1./np.sqrt((time[i]-ts)**2-(r**2/vp0**2)))\n",
    "    # 2D Greens function amplitude before arrival of P-wave at receiver position    \n",
    "    else:\n",
    "        G2[i]=0\n",
    "           \n",
    "# Plotting Green's function in 2D\n",
    "plt.plot(time, G2)\n",
    "plt.title(\"Green's function for hom. 2D acoustic medium\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.xlim((0, tmax))\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3D Green's function  \n",
    "\n",
    "Finally, we can calculate the **3D Green's function** $\\mathbf{G_3(x,t;x_s,t_s)}$, which is governed by\n",
    "\n",
    "\\begin{equation}\n",
    "\\frac{\\partial^2 G_3}{\\partial t^2} - V_{p0}^2 \\biggl(\\frac{\\partial^2 G_3}{\\partial x^2} + \\frac{\\partial^2 G_3}{\\partial y^2} +\\frac{\\partial^2 G_3}{\\partial z^2} \\biggl)= \\delta(t-t_s) \\delta(x-x_s) \\delta(y-y_s) \\delta(z-z_s) \\nonumber\n",
    "\\end{equation}\n",
    "\n",
    "as \n",
    "\n",
    "\\begin{equation}\n",
    "G_3(x,y,z,t) = \\dfrac{1}{4 \\pi V_{p0}^2 r}\\delta\\biggl((t-t_s)-\\frac{r}{V_{p0}}\\biggr) \\nonumber \n",
    "\\end{equation}\n",
    "\n",
    "with the source-receiver distance (offset)\n",
    "\n",
    "$r = \\sqrt{(x-x_s)^2+(y-y_s)^2+(z-z_s)^2}$\n",
    "\n",
    "So the 3D Green's function for the homogeneous acoustic medium is a Delta distribution delayed by the traveltime between source and receiver. For the computation of the 3D Green's function, we have to approximate the  $\\delta-$function. An example is the boxcar function\n",
    "\n",
    "$$\n",
    "\\delta_{bc}(x) = \\left\\{\n",
    "\\begin{array}{ll}\n",
    "\t1/dx &|x|\\leq dx/2 \\\\\n",
    "\t0 &\\text{elsewhere} \t\n",
    "\\end{array}\n",
    "\\right.\n",
    "$$\n",
    "\n",
    "fulfilling the properties of the $\\delta$ function as  $dx \\rightarrow\\; 0$. This function is used to properly scale the source term to obtain correct absolute amplitudes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculation of 3D Green's function\n",
    "\n",
    "G3=np.zeros(nt)                                # initialize G with zeros\n",
    "\n",
    "r=np.sqrt((xs-xr)**2+(ys-yr)**2+(zs-zr)**2)    # defining offset\n",
    "amp=1./(4*np.pi*(vp0**2)*r)                    # defining amplitudes at arrival time\n",
    "t_arr=ts+(r/vp0)                               # arrival time [s]\n",
    "\n",
    "# compute arrival time [time samples] b\n",
    "i_arr=t_arr/dt\n",
    "b=int(i_arr)\n",
    "\n",
    "# add product of P-wave amplitude amp and Dirac Delta function approximation 1/dt \n",
    "# at the arrival time of the P-wave b at the receiver\n",
    "G3[b]= amp/dt\n",
    "\n",
    "# Plotting Green's function in 3D\n",
    "plt.plot(time, G3)\n",
    "plt.title(\"Green's function for hom. 3D acoustic medium\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.xlim((0, tmax))\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Exercise\n",
    "\n",
    "Derive the Green's function solutions of the 2D elastic SH problem:\n",
    "\n",
    "\\begin{align}\n",
    "\\rho\\frac{\\partial^2 u_y}{\\partial t^2} - \\frac{\\partial}{\\partial x} \\mu \\frac{\\partial u_y}{\\partial x} - \\frac{\\partial}{\\partial z} \\mu \\frac{\\partial u_y}{\\partial z} &= f_y\\nonumber \\\\\n",
    "\\end{align}\n",
    "\n",
    "and 1D elastic SH problem:\n",
    "\n",
    "\\begin{align}\n",
    "\\rho\\frac{\\partial^2 u_y}{\\partial t^2} - \\frac{\\partial}{\\partial x} \\mu \\frac{\\partial u_y}{\\partial x} &= f_y.\\nonumber \\\\\n",
    "\\end{align}\n",
    "\n",
    "Assume a constant distribution of the shear modulus $\\mu(x,z) = \\mu_0 =  const. \\neq 0\\; Pa$ and density $\\rho(x,z) = \\rho_0 = const. \\neq 0\\; \\frac{kg}{m^3}$ in the subsurface.\n",
    "\n",
    "*Hint: To solve this problem, you do not have to apply any Fourier transform or integrate along contours around poles*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Computation of seismograms\n",
    "\n",
    "In field data applications we can not excitate a source time function like a delta distribution, which would have a perfect white spectrum (all frequencies are excitated at once). As we will see later, some numerical problems arise when explicitly calculating Green's function with the time-domain finite-difference approach. \n",
    "\n",
    "Instead we have to rely on band-limited source signals. Seismograms for an arbritary source wavelet can be computed from the the Green's function. In the following example, the source wavelet consists of the first derivative of the Gaussian."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Defining source time function\n",
    "f0 = 1           # Frequency (Hz)\n",
    "p=1./f0          # period\n",
    "t0 = p/dt        # defining t0\n",
    "sigma=4./p      \n",
    "\n",
    "# Initialization of source-time function\n",
    "src=np.zeros(nt) \n",
    "source=np.zeros(nt)\n",
    "\n",
    "# Initialization of first derivative of gaussian\n",
    "for it in range(nt):\n",
    "    t=(it-t0)*dt\n",
    "    src[it]=-2*sigma*t*np.exp(-(sigma*t)**2)\n",
    "source[0:nt]=src\n",
    "\n",
    "# Plotting of source time function\n",
    "plt.plot(time, src)\n",
    "plt.title('Source time function')\n",
    "plt.xlabel('Time, s')\n",
    "plt.ylabel('Amplitude')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Excerise\n",
    "\n",
    "Compute seismograms $G_{seis}(x,t)$ for the 1D, 2D and 3D acoustic media, by a convolution of the Green's function $G(x,t;x_s,t_s)$ with the source wavelet $s(t)$:\n",
    "\n",
    "$$G_{seis}(x,t) = G(x,t;x_s,t_s) * s(t)$$\n",
    "\n",
    "Plot the resulting seismograms together with the Green's function solutions.\n",
    "\n",
    "*Hints:* \n",
    "* Use the NumPy function np.convolve. \n",
    "* How could you check if your implemented convolution is correct?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Computation of 1D seismogram\n",
    "\n",
    "# Convolution of Green's function with the 1st derivative of a Gaussian\n",
    "# COMPUTE YOUR SEISMOGRAM HERE!\n",
    "#G1_seis=\n",
    "\n",
    "# Plotting Green's function in 1D\n",
    "plt.plot(time, G1)\n",
    "plt.title(\"Green's function for hom. 1D acoustic medium\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.grid()\n",
    "plt.show()\n",
    "\n",
    "# Plotting convolved Green's function in 1D\n",
    "# PLOT YOUR SEISMOGRAM HERE!\n",
    "# plt.plot()\n",
    "plt.title('After convolution')\n",
    "plt.xlabel('Time, s')\n",
    "plt.ylabel('Amplitude')\n",
    "plt.xlim (0, tmax)\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEWCAYAAAB1xKBvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XucXHV9//HXe++5B8gSYhJCgLiCCEFiEKm4WKRREdpqa7D19tCm9ieK1l6k/RUUa6tY66VoMWhErAX54S3aKFBhQAQkgOEOEkKQECTkns1tb5/fH+dsdrLs5WR3TmZ35v18POYx5zrz2W8m+97zPd85RxGBmZnZUGrKXYCZmY0NDgwzM8vEgWFmZpk4MMzMLBMHhpmZZeLAMDOzTBwYZhlImi7pNkk7JH3+IL93m6Sjc3jdhyW1lvp1rXI5MCx3khZL+pWknZI2pNP/R5LKUEurpMIwdl0CbAQmR8THSltVL0kFSe8vXhYREyNiTanfKyJeHhGFA91P0uGSrpG0XtI2Sb+UdGrR+vdI6kqDrk3SU5K+KemlJf0B7KBzYFiuJH0M+BLwOeAIYDrwAeB0oGGAfWoPWoHZzQEeCX/TFWAisBI4BTgU+BbwP5ImFm1zZ0RMBKYAZwG7gXslnXCwi7USigg//MjlQfLLYifw1iG2uwr4T2BFuv1ZQCPwb8BvgeeBK4BxRfucA6wCtgJ3ACcWrVsL/A3wALAN+C7QlK5rBQrptIAvABvS7R4AThigvg6gHWhL67sK+OeibVqBdVlqSNefl9a/HXgSWAR8GugC9qTvc3m6bQDHFrXp1cALwNPA/wVq0nXvAW5P220L8BTwxkHafS1wVjr9CeC69LV3AA8DCw7g33o7cEpxHf1s8xPg+nJ/Lv0Y/sNHGJan00h+8f8ow7bvIPmFOYnkl95ngZcC84FjgZnAxQCSXgksA/4SOAz4GrBcUmPR6/0pyS/hucCJJL/EiIhCRLSm25wNnJG+z1Tg7cCmvoVFxHuA7wCXRdI99L8Zfp4Ba5C0kOQX89+m73sGsDYi/hH4BXBB+j4X9POa/0ESGkcDrwPeBby3aP2pwOPANOAy4BsH0PV3LnBtWtNy4PIsO0maT3K0uHqITb8PvDZjLTYKOTAsT9OAjRHR2bNA0h2StkraLemMom1/FBG/jIhuYC/wF8BHI2JzROwA/gVYnG77F8DXIuJXEdEVEd9K93l10et9OSLWR8Rm4MckwdNXB0lAvQxQRDwaEc+V5kcftIb3Acsi4qaI6I6IZyPisaFeLO2qeztwUUTsiIi1wOeBdxZt9nREXBkRXSRdRTNIugGzuD0iVqT7fhs4KUNNk9NtPxkR24bYfD1JF5aNUQ4My9MmYJqkup4FEfGaiJiariv+/D1TNN0MjCfp894qaSvws3Q5JOcTPtazLl0/G3hJ0Wv8rmh6F0m/+34i4maSv6K/AjwvaWn6C7BUBqphNkk31IGaRvKX/NNFy54mOfp60XtGxK508kU/+wD61ttU/G/Xl6RxJEF4V0T8a4bXnwlszliLjUIODMvTnSR/+Z+XYdvik8kbSU6SvjwipqaPKZGcRIUkXD5dtG5qRIyPiGsOtMCI+HJEnAK8nKRr6m8z7rqTJNR6HHEAb/sMcMxAJQ2y30aSo6I5RcuOBJ49gPcuibT774fpe/9lxt3+iKTLzcYoB4blJiK2Ap8EvirpbZImSqpJ+7wnDLJfN3Al8AVJhwNIminpD9JNrgQ+IOlUJSZIerOkSQdSn6RXpa9RTxIAe0hOOmexCniTpEMlHQF85ADe+hvAeyX9ftoeMyW9LF33PMn5iRdJu4quAz4taZKkOcBfA/91AO89Yml7XU8S6u9K/70G2rZW0lxJ/0EyMOCTB6dKy4MDw3IVEZeR/FL7O5LRSM+TnKT+e5LRTQP5e5KTqHdJ2g78L9CSvuY9JOcxLicZDbSa9ITyAZpMEj5bSLp2NpGMMMri28D9JCONbiQZBZVJRNxNcqL6CyQjqG6l96jhS8DbJG2R9OV+dv8QSbitIRkc8N8kAwAOpteQjFI7G9ha9H2L4hPap0lqIxk9VSBp61dFxIMHuVYrIUV4WLmZmQ3NRxhmZpaJA8PMzDJxYJiZWSYODDMzy2TAL+WMRVOnTo1jjz223GWMCjt37mTChAFHrlYNt0Mvt0Uvt0Wve++9d2NENA+9ZYUFxvTp07nnnnvKXcaoUCgUaG1tLXcZZed26OW26OW26CXp6aG3SuTWJSVptqRbJD2a3qjlwn62kaQvS1ot6YH0onI9694t6Yn08e686jQzs2zyPMLoBD4WEfel38C9V9JNEfFI0TZvBOalj1NJLnF9qqRDgUuABSSXSrhX0vKI2JJjvWZmNojcjjAi4rmIuC+d3gE8yv4XSYPkGkNXR+IuYKqkGcAfADelVyrdAtxEcploMzMrk4NyDkPSUcDJwK/6rJrJ/lcpXZcuG2h5f6+9hOT2mTQ3N1MoFEpR8pjX1tbmtsDtUMxt0cttMTy5B0Z628bvAR+JiO19V/ezSwyy/MULI5YCSwFaWlrCJ7ISPqmXcDv0clv0clsMT67fw0ivavk94DsR8f1+NllHcm+AHrNIbrIy0HIzMyuTPEdJieQyzo9GxL8PsNly4F3paKlXA9vSO57dAJwt6RBJh5BcFfOGvGo1M7Oh5dkldTrJrSMflLQqXfYPJDd8ISKuAFYAbyK5PPUu0nsTR8RmSZ8CVqb7XZre5tIss4jgl892sLC9k/ENFfWVI7OyyO1/UUTcTv/nIoq3CeCDA6xbxsG/zr9VkLuf2syVD7azvfERPvu2E8tdjtmY52tJWcXa2d4JwPM79pS5ErPK4MCwiqXBD3DN7AA5MKzi+aaSZqXhwLDKlR5gOC/MSsOBYRXLHVJmpeXAsIoX7pMyKwkHhlWs5LujZlYqDgwzM8vEgWFmZpk4MKxi9XRI+RSGWWk4MKxiad+wWieGWSk4MKxi+ZveZqXlwLCK5y4ps9JwYFjF8qhas9JyYJiZWSYODKt47pIyK43cbqAkaRlwDrAhIk7oZ/3fAn9WVMdxQHN6t721wA6gC+iMiAV51WmVa9+wWo+SMiuJPI8wrgIWDbQyIj4XEfMjYj5wEXBrn9uwnpmud1jY8PgchllJ5RYYEXEbkPU+3OcD1+RVi1U3d0mZlUZuXVJZSRpPciRyQdHiAG6UFMDXImLpIPsvAZYANDc3UygUcqx27Ghra6v6tnh0UxcAW7durfq2AH8mirkthqfsgQG8Bfhln+6o0yNivaTDgZskPZYesbxIGiZLAVpaWqK1tTX3gseCQqFAtbdF45ObYOVdTJk6ldbW08pdTtn5M9HLbTE8o2GU1GL6dEdFxPr0eQPwA2BhGeoyM7MiZQ0MSVOA1wE/Klo2QdKknmngbOCh8lRoY5l6h0mZWQnkOaz2GqAVmCZpHXAJUA8QEVekm/0RcGNE7CzadTrwg/TmN3XAf0fEz/Kq0yqXB0mZlVZugRER52fY5iqS4bfFy9YAJ+VTlVUjfw/DrDRGwzkMs1z03KLVw2rNSsOBYRXLFx80Ky0HhpmZZeLAsIrnHimz0nBgWMVyj5RZaTkwrOKFz3qblYQDwypWz0lvx4VZaTgwrIJ5WK1ZKTkwrGJ5WK1ZaTkwzMwsEweGVTz3SJmVhgPDKpZ7pMxKy4Fhlc9nvc1KwoFhFWvfxQfLXIdZpXBgWMVyl5RZaTkwrOK5R8qsNBwYVrH8PQyz0sotMCQtk7RBUr/345bUKmmbpFXp4+KidYskPS5ptaSP51WjmZlll+cRxlXAoiG2+UVEzE8flwJIqgW+ArwROB44X9LxOdZpFc63aDUrjdwCIyJuAzYPY9eFwOqIWBMR7cC1wHklLc6qgnwtKbOSqivz+58m6X5gPfA3EfEwMBN4pmibdcCpA72ApCXAEoDm5mYKhUJ+1Y4hbW1tVd8Wa7d1AW6LHm6HXm6L4SlnYNwHzImINklvAn4IzKP/0ZAD/o0YEUuBpQAtLS3R2tqaQ6ljT6FQoNrb4qFnt8GdtzNhwkRaW19b7nLKzp+JXm6L4SnbKKmI2B4Rben0CqBe0jSSI4rZRZvOIjkCMRsW90iZlUbZAkPSEUq/iitpYVrLJmAlME/SXEkNwGJgebnqNDOzRG5dUpKuAVqBaZLWAZcA9QARcQXwNuCvJHUCu4HFkdxLs1PSBcANQC2wLD23YWZmZZRbYETE+UOsvxy4fIB1K4AVedRl1WPfLVo9TMqsJPxNb6tY8tWkzErKgWFmZpk4MKxi9XZJlbcOs0rhwLCKtS8wPLDWrCQcGFaxfGRhVloODDMzy8SBYRXPRxpmpeHAMDOzTBwYVvF8gGFWGg4Mq3j+prdZaTgwzMwsEweGVSwfWJiVlgPDKp5zw6w0HBhmZpaJA8Mqnw8xzErCgWEVz3lhVhq5BYakZZI2SHpogPV/JumB9HGHpJOK1q2V9KCkVZLuyatGMzPLLs8jjKuARYOsfwp4XUScCHwKWNpn/ZkRMT8iFuRUn1UJfw/DrDTyvEXrbZKOGmT9HUWzdwGz8qrFqpMva25WWrkFxgF6H/DTovkAbpQUwNciou/Rxz6SlgBLAJqbmykUCnnWOWa0tbVVfVs8vb0LgN27d1d9W4A/E8XcFsNT9sCQdCZJYPxe0eLTI2K9pMOBmyQ9FhG39bd/GiZLAVpaWqK1tTXvkseEQqFAtbfFw+u3wR230zRuXNW3BfgzUcxtMTxlHSUl6UTg68B5EbGpZ3lErE+fNwA/ABaWp0KrBD6FYVYaZQsMSUcC3wfeGRG/KVo+QdKknmngbKDfkVZmZnbw5NYlJekaoBWYJmkdcAlQDxARVwAXA4cBX1Vy8+XOdETUdOAH6bI64L8j4md51WmVzye/zUojz1FS5w+x/v3A+/tZvgY46cV7mA2Pu6TMSmPILilJ4yX9k6Qr0/l5ks7JvzSzkXFQmJVWlnMY3wT2Aqel8+uAf86tIjMzG5WyBMYxEXEZ0AEQEbsB5VqVWQn5SMOsNLIERrukcaTXcJN0DMkRh5mZVZEsJ70vAX4GzJb0HeB04D15FmVmZqPPkIERETdJug94NUlX1IURsTH3ysxKxBcfNCuNAQND0iv7LHoufT5S0pERcV9+ZZmVjuPCrDQGO8L4fPrcBCwA7ic5wjgR+BX7X/vJbNTyAYZZaQx40jsizoyIM4GngVdGxIKIOAU4GVh9sAo0G6luJ4ZZSWQZJfWyiHiwZyYiHgLm51eSWWk5MMxKI8soqUclfR34L5Lu4D8HHs21KrMS6nZemJVElsB4L/BXwIXp/G3Af+ZWkVmJdTkxzEoiy7DaPcAX0ofZmOMuKbPSGDIwJD1FPyMTI+LoXCoyK7FuH2GYlUSWLqkFRdNNwJ8Ah+ZTjlnp9BxYOC/MSmPIUVIRsano8WxEfBF4/UGozawk3CVlVhpZ7ofxyqLHAkkfACZleXFJyyRtkNTvLVaV+LKk1ZIeKP52uaR3S3oifbw7809k1ocDw6w0snRJfb5ouhN4CvjTjK9/FXA5cPUA698IzEsfp5KMvjpV0qEkFz1cQHL+5F5JyyNiS8b3NdvHXVJmpZElMN6X3jZ1H0lzs7x4RNwm6ahBNjkPuDqSq8PdJWmqpBkk9wK/KSI2p+93E7AIuCbL+5oV87Bas9LIEhjXA30vRHg9cEoJ3n8m8EzR/Lp02UDLX0TSEmAJQHNzM4VCoQRljX1tbW1V3xZrt3Xtm672tgB/Joq5LYZnsKvVvgx4OTBF0h8XrZpMMlqqFPq7c18MsvzFCyOWAksBWlpaorW1tUSljW2FQoFqb4sH122DO28HqPq2AH8mirkthmewI4wW4BxgKvCWouU7gL8o0fuvA2YXzc8C1qfLW/ssL5ToPa1KhC9sblZSAwZGRPwI+JGk0yLizpzefzlwgaRrSU56b4uI5yTdAPyLpEPS7c4GLsqpBjMzy2CwLqm/i4jLgHdIOr/v+oj48FAvLukakiOFaZLWkYx8qk/3vwJYAbyJ5HLpu0iuW0VEbJb0KWBl+lKX9pwANzOz8hisS6rnirT3DPfFI+JFQdNnfQAfHGDdMmDZcN/bzMxKa7AuqR+nz986eOWYmdloNViX1I8Z5HbIEXFuLhWZmdmoNFiX1L8dtCrMzGzUG6xL6taeaUkNwMtIjjgej4j2g1Cb2Yj4ElJmpZXlfhhvBq4AniT5Qt1cSX8ZET/NuzgzMxs9sl588MyIWA0g6RjgfwAHhplZFRny8ubAhp6wSK0BNuRUj5mZjVJZjjAelrQCuI7kHMafACt7ri8VEd/PsT4zMxslsgRGE/A88Lp0/gWSW7S+hSRAHBhmZlVgyMCIiPcejELMzGx0yzJKai7wIeCo4u39xT0b7Tyq1qy0snRJ/RD4BvBjoDvfcszMbLTKEhh7IuLLuVdiZmajWpbA+JKkS4Abgb09CyPivtyqMjOzUSdLYLwCeCfwenq7pCKdNzOzKpElMP4IONrXjzIzq25Zvul9P8l9vc3MrIplOcKYDjwmaSW95zAiIs4bakdJi4AvAbXA1yPiM33WfwE4M50dDxweEVPTdV3Ag+m633oYrx2o8OVqzUoqS2BcUjQt4PeAQW+9CiCpFvgK8AZgHcnlRJZHxCM920TER4u2/xBwctFL7I6I+RnqMxtSRCCp3GWYjWlDdkml98XYBrwZuAr4fZLLnQ9lIbA6Itak5z+uBQY7KjkfuCbD65odsK5uH22YjdRgt2h9KbCY5Bf5JuC7gCLizIH26WMm8EzR/Drg1AHeaw4wF7i5aHGTpHuATuAzEfHDAfZdAiwBaG5uplAoZCyvsrW1tVV9Wzy5tWvf9M8Lt9JYW91HGP5M9HJbDM9gXVKPAb8A3lJ0L4yPDrJ9X/397xzoz7zFwPUR0VW07MiIWC/paOBmSQ9GxJMvesGIpcBSgJaWlmhtbT2AEitXoVCg2ttiym+3wF13APDq036PKePry1xRefkz0cttMTyDdUm9FfgdcIukKyX9Pv2HwEDWAbOL5mcB6wfYdjF9uqMiYn36vAYosP/5DbMD0t7lq9qYjdSAgRERP4iIt5Pcy7sAfBSYLuk/JZ2d4bVXAvMkzU3vCb4YWN53I0ktwCHAnUXLDpHUmE5PA04HHum7r1lWHQ4MsxHLctJ7Z0R8JyLOITlKWAV8PMN+ncAFwA3Ao8B1EfGwpEslFQ+RPR+4NvYfA3kccI+k+4FbSM5hODDsgBR/oBwYZiOXZVjtPhGxGfha+siy/QpgRZ9lF/eZ/0Q/+91BckkSs5Jo73RgmI1Ulm96m415PodhNnIODKsKHV3+HobZSDkwrCr4HIbZyDkwrCr4HIbZyDkwrCr4HIbZyDkwrGIVD9Tu8BGG2Yg5MKwq+KS32cg5MKwq7O3sGnojMxuUA8Oqwu4OB4bZSDkwrCrs2uvAMBspB4ZVhZ3tneUuwWzMc2BYVdjV7iMMs5FyYFgF6x0ZtXOvjzDMRsqBYVVht48wzEbMgWFVwecwzEbOgWFVwecwzEYu18CQtEjS45JWS3rRXfokvUfSC5JWpY/3F617t6Qn0se786zTKp/PYZiN3AHdce9ASKoFvgK8AVgHrJS0vJ9brX43Ii7os++hwCXAApIzl/em+27Jq16rXBMaamlzYJiNWJ5HGAuB1RGxJiLagWuB8zLu+wfATRGxOQ2Jm4BFOdVpFW7q+Aa27OoodxlmY15uRxjATOCZovl1wKn9bPdWSWcAvwE+GhHPDLDvzP7eRNISYAlAc3MzhUJh5JVXgLa2tqpviye2JOct6rr38ru2bm655RYklbmq8vFnopfbYnjyDIz+/mf2vWToj4FrImKvpA8A3wJen3HfZGHEUmApQEtLS7S2tg674EpSKBSo9raYuHYz/OpOjpx+KE9v38irXvNaJjbm+ZEf3fyZ6OW2GJ48u6TWAbOL5mcB64s3iIhNEbE3nb0SOCXrvmZZTR3fAMCWne1lrsRsbMszMFYC8yTNldQALAaWF28gaUbR7LnAo+n0DcDZkg6RdAhwdrrM7IAdMr4egC27HBhmI5Hb8XlEdEq6gOQXfS2wLCIelnQpcE9ELAc+LOlcoBPYDLwn3XezpE+RhA7ApRGxOa9arbLtO8LwiW+zEcm1QzciVgAr+iy7uGj6IuCiAfZdBizLsz6rDof2HGG4S8psRPxNb6t40yc3AfD89j1lrsRsbHNgWMXqGVY3samOSY11rN+6u6z1mI11DgyrCjOmNrF+m48wzEbCgWEVT4iXTB3Hc9t8hGE2Eg4Mqwozpozjua0+wjAbCQeGVYWZU5vYtLOdXb4vhtmwOTCsKhzTPBGANS/sLHMlZmOXA8OqwrzpSWA8sWFHmSsxG7scGFYV5hw2gfpa8Zvn28pditmY5cCwihVF1zeur61h7rQJPP47H2GYDZcDwypezy0wTpw1lVXPbCWi3yvlm9kQHBhWNU6Zcwibd7azdtOucpdiNiY5MKxqnDLnEADufdq3hjcbDgeGVY1jmydy6IQGbn/ihXKXYjYmOTCsatTUiNe/7HBuefwFOru6y12O2ZjjwLCqctZxh7Ntdwcr17pbyuxA5RoYkhZJelzSakkf72f9X0t6RNIDkn4uaU7Rui5Jq9LH8r77mg2lv9FQr53XzISGWr5/37oyVGQ2tuUWGJJqga8AbwSOB86XdHyfzX4NLIiIE4HrgcuK1u2OiPnp49y86rTKp6LpCY11nDt/Jj9+YD3b9/iWrWYHIs8jjIXA6ohYExHtwLXAecUbRMQtEdEzxvEuYFaO9ZgB8I6FR7Kno5tr7/5tuUsxG1PyDIyZwDNF8+vSZQN5H/DTovkmSfdIukvSH+ZRoFWnV8yawu8dO40rbl1D215fvdYsq7ocX1v9LOv3K7aS/hxYALyuaPGREbFe0tHAzZIejIgn+9l3CbAEoLm5mUKhMOLCK0FbW1vVt8Xjm7sAWHX//bSvq91v3ZnTurh9dTsXXX0zb53XUI7yDjp/Jnq5LYYnz8BYB8wump8FrO+7kaSzgH8EXhcRe3uWR8T69HmNpAJwMvCiwIiIpcBSgJaWlmhtbS3dTzCGFQoFqr0txq3ZBHffxfyTTuI1x07bb10r8NDeVfz4/vX81ZtfzfEvmVyWGg8mfyZ6uS2GJ88uqZXAPElzJTUAi4H9RjtJOhn4GnBuRGwoWn6IpMZ0ehpwOvBIjrVaFbr4nOOZOr6BC6/9tbumzDLILTAiohO4ALgBeBS4LiIelnSppJ5RT58DJgL/r8/w2eOAeyTdD9wCfCYiHBh2QIa6xOAhExr40uL5rNm4k49c+2t/mc9sCHl2SRERK4AVfZZdXDR91gD73QG8Is/arIr0dzYtdfqx0/jEW47nn370MBd+dxVffPt86mv9fVaz/uQaGGZjwTtPO4rdHV38y4rH2L67g/84/2Smjq+OE+FmB8J/SpkBS844hs/88Su4a80mzr38l9z79OZyl2Q26jgwzFKLFx7JtUtOo6s7eNsVd/KJ5Q+zdVd7ucsyGzUcGGZFTplzCDd89Aze+eo5fOvOtZxx2S18tbCaHb6MiJkDw6yviY11XHreCfz0wtfyqqMO5bKfPc5p/3ozn1j+MGteaCt3eWZl45PeVrFGeuvulx0xmW+851Xc/8xWvvnLp/jOr57mqjvWctLsqZx70ks458QZTJ/cVJpizcYAB4ZVPA02rjaDk2ZP5YuLT+Yf3nQcP1z1LD/89Xo+9ZNH+NRPHuH4GZNpbWmmteVw5s+eSkOdD9qtcjkwzDI6fHITS844hiVnHMMTz+/gxkee59bHX+Brt63hq4Unaayr4aRZU3nlnENYMOcQ5h85lWkTG8tdtlnJODDMhmHe9EnMmz6JD555LNt2d3DnkxtZuXYL9zy9ha//Yg1X3Jr0h02b2MhxMyZx/IzJHDdjMi+dPomjpo1nfIP/69nY40+t2QhNGVfPohNmsOiEGQDs6eji/me28tD67Tz6XPL45i/X0l506ZHDJzVy1LQJzD1sAkdNm8BRh43nJVPHMWNqE9MmNFJTM7JuNLM8ODDMSqypvpZTjz6MU48+bN+yjq5u1rywk9Ub2li7aSdPbdzJ2o07+fljz7Oxbf/vejTU1nDElCZmTGlKQmRKE9MnNzFtYiPTJjZw2MRGmic2MnlcHZKDxQ4eB4bZQVBfW0PLEZNoOWLSi9Zt39PBbzft4rlte1i/dTfrt+3mua17eG7bbu5+ajO/276Hru4XD/lqqK3hsIkNHDaxgWkTGzlsQiNTxtUzdXzymDKuPp1vYMq4etrag67uoNZHLzZMDgyrWDHk9WpHh8lN9ZwwcwonzJzS7/qu7mDLrnY2tu1l4470uW0vG9t6pze1tfOb3+1g2+4OdrZ3DfxmN69gUlMdU8fXM7GxnkmNdUxorGViUz0TG2uZ2FjHhMY6JqaPCY11TGxKpxvqmNRUx/iGWsY11NJUV+uusyrjwLCKN9Z7bWprlHZHNcIRQ2/f3tnN9j0dbN3VwbbdHWzb3c7WXR3c+8CjTJs5J13WwY49nbTt7WBjWztrN+2ibW8nbXs62d0xSOD00VRfw7j6WsbV19LUUJuESX0tTemycQ19ntPpnvUNdTU01tWkz73zTfU1NNTW0lhfQ0Ntzb7nOl9JuKwcGGYVpqGupjdgihy6fTWtrS8dcv/Orm52tnexc28nO/d2siN9btvTSVs6vaezm93tXezu6Op97uhiT3sXu9q72LGnkxd27N1/fXsXnf10rR2I2hoVBUxR0KShkixL5hvqRF1NDfW1NdTXKn1Opteva2dV52/6XVefBlND0XTxNnU1oqFu/+m6GlFfV0N9TQ21NaKuRhV59OXAMLP91NXWMGVcDVPG1Zf8tTu6uvcFy+6OLto7u9m779E73z7gsqJ9Orpp7+qzrLObbbs7aO/sprOrm46ubjq6In3uprMraE+nu9c8UfKfr5gEdTVKA6Q3SPY91w6wvHj72gGW98zXDvL6NTX71tcqfU6DrK5o2YFwYJjZQdPzV/rkptKH0YEoFAq89ozXJSHSHXR0dtPRnYRLT9C0dwad3fuHTnHg9Ex3FgdSdzKwoLMr6Ooumt/33F20vp9TRLa1AAAGl0lEQVTl++0f7O3s6rNd0fZdAyzvDjq68jl/l2tgSFoEfAmoBb4eEZ/ps74RuBo4BdgEvD0i1qbrLgLeB3QBH46IG/Ks1cyqS/IXd20yU4FfyO/uEyTd3SSBErFvursb5nw2+2vmFhiSaoGvAG8A1gErJS3vc2/u9wFbIuJYSYuBzwJvl3Q8sBh4OfAS4H8lvTQisp+NMzOrYjU1omFfl1NtSV4zzyOMhcDqiFgDIOla4DygODDOAz6RTl8PXK7km0jnAddGxF7gKUmr09e7c7A3fLatmzf8+60l/SHGqp27djHhvupui12DDS81swOWZ2DMBJ4pml8HnDrQNhHRKWkbcFi6/K4++87s700kLQGWAEyYPocp2l2S4se6iY3d1FZ5W0xphNmHB1vWPEDht5U3YuVAtbW1USgUyl3GqOC2GJ48A6O//6F9z8QMtE2WfZOFEUuBpQAtLS1x/UcXHUiNFatQKNDa2lruMsrO7dDLbdHLbTE8eX4LZh0wu2h+FrB+oG0k1QFTgM0Z9zUzs4Moz8BYCcyTNFdSA8lJ7OV9tlkOvDudfhtwc0REunyxpEZJc4F5wN051mpmZkPIrUsqPSdxAXADySn6ZRHxsKRLgXsiYjnwDeDb6UntzSShQrrddSQnyDuBD3qElJlZeeX6PYyIWAGs6LPs4qLpPcCfDLDvp4FP51mfmZll5yt5mZlZJg4MMzPLxIFhZmaZODDMzCwTJaNYK4OkHcDj5a5jlJgGbCx3EaOA26GX26KX26JXS0S8+N7B/ai0y5s/HhELyl3EaCDpHreF26GY26KX26KXpHuybusuKTMzy8SBYWZmmVRaYCwtdwGjiNsi4Xbo5bbo5bbolbktKuqkt5mZ5afSjjDMzCwnDgwzM8ukIgJD0iJJj0taLenj5a6nXCQtk7RB0kPlrqXcJM2WdIukRyU9LOnCctdULpKaJN0t6f60LT5Z7prKTVKtpF9L+km5ayknSWslPShpVZbhtWP+HIakWuA3wBtIbry0Ejg/Ih4ZdMcKJOkMoA24OiJOKHc95SRpBjAjIu6TNAm4F/jDKv1cCJgQEW2S6oHbgQsj4q4hdq1Ykv4aWABMjohzyl1PuUhaCyyIiExfYqyEI4yFwOqIWBMR7cC1wHllrqksIuI2kvuKVL2IeC4i7kundwCPMsB94StdJNrS2fr0Mbb/UhwBSbOANwNfL3ctY00lBMZM4Jmi+XVU6S8G65+ko4CTgV+Vt5LySbtgVgEbgJsiomrbAvgi8HdAd7kLGQUCuFHSvZKWDLVxJQSG+llWtX892f4kTQS+B3wkIraXu55yiYiuiJgPzAIWSqrKLktJ5wAbIuLectcySpweEa8E3gh8MO3WHlAlBMY6YHbR/CxgfZlqsVEk7a//HvCdiPh+uesZDSJiK1AAFpW5lHI5HTg37bu/Fni9pP8qb0nlExHr0+cNwA9IuvgHVAmBsRKYJ2mupAaS+4IvL3NNVmbpid5vAI9GxL+Xu55yktQsaWo6PQ44C3isvFWVR0RcFBGzIuIokt8VN0fEn5e5rLKQNCEdEIKkCcDZwKAjLMd8YEREJ3ABcAPJic3rIuLh8lZVHpKuAe4EWiStk/S+ctdURqcD7yT5C3JV+nhTuYsqkxnALZIeIPkD66aIqOrhpAbAdOB2SfcDdwP/ExE/G2yHMT+s1szMDo4xf4RhZmYHhwPDzMwycWCYmVkmDgwzM8vEgWFmZpnUlbsAs9FM0mHAz9PZI4Au4IV0fldEvKYshZmVgYfVmmUk6RNAW0T8W7lrMSsHd0mZDZOktvS5VdKtkq6T9BtJn5H0Z+k9KB6UdEy6XbOk70lamT5OH+L1Z0i6Lf3S4UOSXnswfi6zgbhLyqw0TgKOI7m8/Brg6xGxML1x04eAjwBfAr4QEbdLOpLk6gTHDfKa7wBuiIhPp/d9GZ/rT2A2BAeGWWmsjIjnACQ9CdyYLn8QODOdPgs4PrnMFQCTJU1K79fR72sCy9KLKP4wIlblU7pZNu6SMiuNvUXT3UXz3fT+YVYDnBYR89PHzEHCoueGWGcAzwLflvSuHOo2y8yBYXbw3EhyoUwAJM1PnxdKurrvxpLmkNy74UqSK+++8mAVatYfB4bZwfNhYIGkByQ9AnwgXX4ksLuf7VuBVZJ+DbyV5ByIWdl4WK1ZmUn6HPDtiHig3LWYDcaBYWZmmbhLyszMMnFgmJlZJg4MMzPLxIFhZmaZODDMzCwTB4aZmWXy/wFa5J3A8jC8gQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Convolution of Green's function with the 1st derivative of a Gaussian\n",
    "# COMPUTE YOUR SEISMOGRAM HERE!\n",
    "#G2_seis=\n",
    "\n",
    "# Plotting Green's function in 2D\n",
    "plt.plot(time, G2)\n",
    "plt.title(\"Green's function in 2D\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.xlim((0, tmax))\n",
    "plt.grid()\n",
    "plt.show()\n",
    "\n",
    "# Plotting convolved Green's function in 1D\n",
    "# PLOT YOUR SEISMOGRAM HERE!\n",
    "# plt.plot()\n",
    "plt.title('After convolution')\n",
    "plt.xlabel('Time, s')\n",
    "plt.ylabel('Amplitude')\n",
    "plt.xlim((0, tmax))\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Convolution of Green's function with the 1st derivative of a Gaussian\n",
    "# COMPUTE YOUR SEISMOGRAM HERE!\n",
    "#G3_seis =\n",
    "\n",
    "# Plotting Green's function in 3D\n",
    "plt.plot(time, G3)\n",
    "plt.title(\"Green's function in 3D\" )\n",
    "plt.xlabel(\"Time, s\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.xlim((0, tmax))\n",
    "plt.grid()\n",
    "plt.show()\n",
    "\n",
    "# Plotting convolved Green's function in 1D\n",
    "# PLOT YOUR SEISMOGRAM HERE!\n",
    "# plt.plot()\n",
    "plt.title('After convolution')\n",
    "plt.xlabel('Time, s')\n",
    "plt.ylabel('Amplitude')\n",
    "plt.xlim (0, tmax)\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## We learned:\n",
    "\n",
    "* Calculation of analytical Green's function in the 1D, 2D, and 3D cases\n",
    "* How to define a source time function\n",
    "* Convolution of Green's function with source time function"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
